<?php

namespace App\Http\Controllers;

use App\Http\Requests\LoginRequest;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{

    // 登录显示
    public function index()
    {
        // 判断用户是否已经登录过
        if(auth()->check()){
            // 跳转到后页
            return redirect(route('admin.index'));
        }
        return view('admin.user.login');
    }

    //自定义用户名
    //Laravel 默认使用 email 字段来认证
    public function username()
    {
        return 'username';
    }

    //重定向未认证的用户
    protected function redirectTo($request)
    {
        return route('admin.login');
    }

    /**
     * 登录 别名 admin.login 根据别名生成url  route(别名);
     * @param LoginRequest $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function login(LoginRequest $request)
    {
        // 登录
        $credentials = $request->only('username', 'password');
        // 登录成功
        if (Auth::attempt($credentials, $request['remember'])) {
            // 用户已经被记住...
            // 获取当前通过认证的用户...存储在session中
            //$user = Auth::user();
            //  获取当前通过认证的用户 ID...
            //$id = Auth::id();
            // laravel默认session是存储在文件中 优化到memcached redis
            return $this->success('登入成功',['access_token' => auth()->user()->remember_token]);
            //return redirect()->intended('dashboard');// 跳转后台页面
        }
        // withErrors 把信息写入到验证错误提示中  特殊的session laravel中叫 闪存
        // 闪存 从设置好之后，只能在第1个http请求中获取到数据，以后就没有了
        return $this->error('登入失败');
        //return redirect(route('admin.login'))->withErrors(['error'=>'登录失败']);
    }
}
